(include "class/array/class.inc")

(def-class 'nums 'array)
(dec-method :vtable 'class/nums/vtable)
(dec-method :create 'class/nums/create)

(dec-method :vcreate 'class/nums/create :override)

(dec-method :add 'class/nums/add :virtual '(r0 r1 r2) '(r0 r1))
(dec-method :sub 'class/nums/sub :virtual '(r0 r1 r2) '(r0 r1))
(dec-method :mul 'class/nums/mul :virtual '(r0 r1 r2) '(r0 r1))
(dec-method :div 'class/nums/div :virtual '(r0 r1 r2) '(r0 r1))
(dec-method :mod 'class/nums/mod :virtual '(r0 r1 r2) '(r0 r1))
(dec-method :abs 'class/nums/abs :virtual '(r0 r1) '(r0))
(dec-method :sum 'class/nums/sum :virtual '(r0) '(r0 r1))
(dec-method :scale 'class/nums/scale :virtual '(r0 r1 r2) '(r0))

(dec-method :lisp_vecop1 'class/nums/lisp_vecop1 :static '(r0 r1 r2) '(r0 r1))
(dec-method :lisp_vecop2 'class/nums/lisp_vecop2 :static '(r0 r1 r2) '(r0 r1))
(dec-method :lisp_add 'class/nums/lisp_add :static '(r0 r1) '(r0 r1))
(dec-method :lisp_sub 'class/nums/lisp_sub :static '(r0 r1) '(r0 r1))
(dec-method :lisp_mul 'class/nums/lisp_mul :static '(r0 r1) '(r0 r1))
(dec-method :lisp_div 'class/nums/lisp_div :static '(r0 r1) '(r0 r1))
(dec-method :lisp_mod 'class/nums/lisp_mod :static '(r0 r1) '(r0 r1))
(dec-method :lisp_sum 'class/nums/lisp_sum :static '(r0 r1) '(r0 r1))
(dec-method :lisp_scale 'class/nums/lisp_scale :static '(r0 r1) '(r0 r1))
(dec-method :lisp_abs 'class/nums/lisp_abs :static '(r0 r1) '(r0 r1))

(def-struct 'nums 'array)
(def-struct-end)
